/**
 * Copyright (C) 2008 Happy Fish / YuQing
 *
 * FastDFS Java Client may be copied only under the terms of the GNU Lesser
 * General Public License (LGPL).
 * Please visit the FastDFS Home Page http://www.csource.org/ for more detail.
 */

package org.csource.fastdfs.test;

import java.io.FileOutputStream;
import java.io.IOException;

import org.csource.fastdfs.DownloadCallback;

/**
 * DowloadCallback test
 * 
 * @author Happy Fish / YuQing
 * @version Version 1.3
 */
public class DownloadFileWriter implements DownloadCallback {
	private String filename;
	private FileOutputStream out = null;
	private long current_bytes = 0;

	public DownloadFileWriter(String filename) {
		this.filename = filename;
	}

	public int recv(long file_size, byte[] data, int bytes) {
		try {
			if (this.out == null) {
				this.out = new FileOutputStream(this.filename);
			}

			this.out.write(data, 0, bytes);
			this.current_bytes += bytes;

			if (this.current_bytes == file_size) {
				this.out.close();
				this.out = null;
				this.current_bytes = 0;
			}
		} catch (IOException ex) {
			ex.printStackTrace();
			return -1;
		}

		return 0;
	}

	protected void finalize() throws Throwable {
		if (this.out != null) {
			this.out.close();
			this.out = null;
		}
	}
}
